package com.bjc.platform.service;

import java.util.List;
import java.util.Map;

import org.springframework.data.domain.PageRequest;

import com.bjc.platform.model.AdmOrg;
import com.bjc.platform.util.Page;
import com.bjc.platform.vo.AdmOrgSearchCondition;

public interface AdmOrgService {

	public static int EXIST_ORG_NAME_DEPARTMENT = 1;
	public static int EXIST_ORG_CODE_DEPARTMENT = 2;
	public static int EXIST_ORG_NAME_COMPANY = 3;
	public static int EXIST_ORG_CODE_COMPANY = 4;
	public static int VALID_ORG = 0;

	/**
	 * 返回所有组织信息
	 * 
	 * @return
	 */
	List<AdmOrg> getAll();

	/**
	 * 保存组织信息
	 * 
	 * @param org
	 */
	AdmOrg save(AdmOrg org, String parentOrgType);

	/**
	 * 根据Id查询组织信息
	 * 
	 * @param id
	 * @return
	 */
	AdmOrg get(Long id);

	/**
	 * 根据ID删除组织信息
	 * 
	 * @param id
	 */
	void delete(Long id);

	/**
	 * 查询组织的树状结构
	 * 
	 * @param orgId
	 * @return
	 */
	List<Map<String, Object>> getOrgForTree(Long orgId);

	/**
	 * 根据条件查询组织信息
	 * 
	 * @param cond
	 * @param pr
	 * @return
	 */
	Page search(AdmOrgSearchCondition cond, PageRequest pr);

	/**
	 * 根据组织ID查找组织信息
	 * 
	 * @param orgId
	 * @return
	 */
	AdmOrg getById(Long orgId);

	/**
	 * 检查orgCode在orgId所在的公司里是否唯一, 返回true表示是唯一, 否则为false
	 * 
	 * @param orgCode
	 * @param orgId
	 * @return
	 */
	int checkOrgCode(String orgCode, Long id, Long pid);

	/**
	 * 检查组织名称在orgId所在的公司里是否唯一, 返回true表示是唯一, 否则为false
	 * 
	 * @param orgCode
	 * @param orgId
	 * @return
	 */
	int checkOrgName(String orgName, Long id, Long pid);
	
	
	/**
	 * @param orgTypes DEPARTMENT,COMPANY
	 * @param subType YLK,JK
	 * @return
	 */
	List<AdmOrg> queryUserOperationOrg(String orgType, String[] subTypes);

	/**
	 * 当前用户又集团身份登录时, 设置当前用户默认操作的公司
	 * @return
	 */
	AdmOrg getDefaultCompany();
	
	
}
